// pages/cart/cart.js
import { getCartListApi, checkCartApi, checkAllCartApi } from '../../api/shopcart';

const app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    cartList: [],
    isCheckedAll: false,
    totalPrice: 0,
    totalNum: 0,
    hasLogin: false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  async getCartList() {
    const cartList = await getCartListApi();
    this.setData({
      cartList,
      // 计算全选或全不选
      isCheckedAll: cartList.every(cart => cart.isChecked),
      // 总价
      totalPrice: cartList.reduce((p, c) => p + (c.isChecked ? c.price * c.count : 0), 0),
      // 选中商品数量
      totalNum: cartList.reduce((p, c) => p + (c.isChecked ? c.count : 0), 0)
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getCartList();

    const token = app.globalData.token;
    if (token) {
      this.setData({
        hasLogin: true
      })
    }
  },

  // 单选
  async handleCartChange(e) {
    // 自定义属性的名称会自动转小写
    const { goodsid, ischecked } = e.currentTarget.dataset;
    // 发送请求只会更新服务器数据
    await checkCartApi(goodsid, 1 - ischecked);
    // 手动更新小程序数据
    // this.setData({
    //   cartList: this.data.cartList.map(cart => {
    //     if (cart.goodsId === goodsid) {
    //       cart.isChecked = 1 - ischecked;
    //     }
    //     return cart;
    //   })
    // })
    this.getCartList();
  },

  // 全选&全不选
  async handleAllCartChange() {
    await checkAllCartApi(1 - this.data.isCheckedAll);
    this.getCartList();
  },

  goOrderDetail() {
    wx.navigateTo({
      url: '/pages/order/detail/detail',
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})